package com.jcxy.mapper;

import com.jcxy.VO.*;
import com.jcxy.pojo.Burse;
import com.jcxy.pojo.BurseDetail;
import com.jcxy.pojo.Process;
import com.jcxy.pojo.ProcessUser;

import java.util.List;
import java.util.Map;

public interface ProcessMapper {

    /**
     * 插入流程进本信息
     * @param process
     */
    void insertProcess(Process process);

    /**
     * 插入费用报销信息
     * @param burse
     */
    void insertBurse(Burse burse);

    /**
     * 插入费用报销明细
     * @param detail
     */
    void insertBurseDetail(BurseDetail detail);

    /**
     * 添加流程审核记录
     * @param processUser
     */
    void insertProcessUser(ProcessUser processUser);

    /**
     * 查询流程数量
     * @param dto
     * @return
     */
    Integer queryProcessCount(Map dto);

    /**
     * 查询流程信息
     * @param dto 包含查询条件和分页信息
     * @return
     */
    List<Process> queryProcessByPage(Map dto);

    /**
     * 查询费用报销流程信息，根据流程id
     * @param process_id
     * @return
     */
    BurseVo queryBurseProcessById(Integer process_id);

    /**
     * 通过费用报销id，查询费用明细
     * @param burse_id
     * @return
     */
    List<BurseDetail> queryBurseDetailById(Integer burse_id);

    /**
     * 插入出差流程记录
     * @param dto
     */
    void insertEvection(Map dto);

    /**
     * 查询出差流程信息，根据流程id
     * @param process_id
     * @return
     */
    EvectionVo queryEvectionProcessById(Integer process_id);

    /**
     * 插入加班流程记录
     * @param dto
     */
    void insertOvertime(Map dto);

    /**
     * 查询加班流程信息，根据流程id
     * @param process_id
     * @return
     */
    OvertimeVo queryOvertimeProcessById(Integer process_id);

    /**
     * 添加转正流程记录
     * @param dto
     */
    void insertRegular(Map dto);

    /**
     * 查询转正流程信息，根据流程id
     * @param process_id
     * @return
     */
    RegularVo queryRegularProcessById(Integer process_id);

    /**
     * 添加请假流程记录
     * @param dto
     */
    void insertHoliday(Map dto);

    /**
     * 查询请假流程信息，根据流程id
     * @param process_id
     * @return
     */
    HolidayVo queryHolidayProcessById(Integer process_id);

    /**
     * 添加离职流程记录
     * @param dto
     */
    void insertResign(Map dto);

    /**
     * 查询请假流程信息，根据流程id
     * @param process_id
     * @return
     */
    ResignVo queryResignProcessById(Integer process_id);

    /**
     * 查询用户能审核的流程记录数量
     * @param dto
     * @return
     */
    Integer queryAuditProcessCount(Map dto);

    /**
     * 分页查询用户能审核的流程记录
     * @param dto 包含查询条件和分页信息
     * @return
     */
    List<Process> queryAuditProcessByPage(Map dto);

    /**
     * 修改流程基本信息
     * @param dto
     * @return
     */
    int updateProcess(Map dto);

    /**
     * 修改当前用户的审核流程信息
     * @param dto
     * @return
     */
    int updateUserAuditProcess(Map dto);

    /**
     * 修改费用报销流程的意见
     * @param dto
     * @return
     */
    int updateBurseAdvice(Map dto);

    /**
     * 修改出差流程的意见
     * @param dto
     * @return
     */
    int updateEvectionAdvice(Map dto);

    /**
     * 修改加班流程的意见
     * @param dto
     * @return
     */
    int updateOvertimeAdvice(Map dto);

    /**
     * 修改转正流程的意见
     * @param dto
     * @return
     */
    int updateRegularAdvice(Map dto);

    /**
     * 修改请假流程的意见
     * @param dto
     * @return
     */
    int updateHolidayAdvice(Map dto);

    /**
     * 修改离职流程的意见
     * @param dto
     * @return
     */
    int updateResignAdvice(Map dto);
}
